//2673.使二叉树所有路径值相等的最小代价
//https://leetcode.cn/problems/make-costs-of-paths-equal-in-a-binary-tree/?envType=daily-question&envId=2024-02-28
class Solution {
public:
    int minIncrements(int n, vector<int>& cost) 
    {
        int ret = 0;
        //依次调整兄弟节点 取最小调整次数并加到父节点方便父节点当叶节点调整
        for (int i = n - 2; i > 0; i -= 2) 
        {
            ret += abs(cost[i] - cost[i + 1]);
            // 叶节点 i 和 i+1 的双亲节点下标为 i/2（整数除法）
            cost[i / 2] += max(cost[i], cost[i + 1]);
        }
        return ret;
    }
};